FAQ : Indexed Concatenation

SetDirectory[ParentDirectory[NotebookDirectory[]]];
Needs["SSSiCv100`"];

An Indexed Concatenation is a mathematical notation designed to represent complex datasets in a more concise form. This is typically done by combining repeated elements of the dataset to create a more compact list.

Basics of using Indexed Concatenation to summarize a network.

Here is the example graph used in the SIMULTECH2025 Paper, presented by Rhys Sharpe in June 2025, in Bilbao, Spain. Clear patterns are visible:

SetDirectory[ParentDirectory[NotebookDirectory[]]];
Needs["SSSiCv100`"];
EDSL1={{1,1,2,2},{2,2},{2,4},{1,5},{1,1},{1,10},{1,10},{},{1,1,2,2},{2,2},{2,4},{1,7},{1,1},{1,12},{1,12},{1,12},{1,12},{},{1,1,2,2},{2,2},{2,4},{1,9},{1,1},{1,14},{1,14},{1,14},{1,14},{1,14},{1,14},{},{1,1,2,2},{2,2},{2,4},{1,11},{1,1},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{},{1,1,2,2},{2,2},{2,4},{1,13},{1,1},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{},{1,1,2,2},{2,2},{2,4},{1,15},{1,1},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{},{1,1,2,2},{2,2},{2,4},{1,17},{1,1},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{},{1,1,2,2},{2,2},{2,4},{1,19},{1,1},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{1,24},{},{1,1,2,2},{2,2},{2,4},{1,21},{1,1},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{1,26},{},{1,1,2,2},{2,2},{2,4},{1,23},{1,1},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{1,28},{},{1,1,2,2},{2,2},{2,4},{1,25},{1,1},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{1,30},{},{1,1,2,2},{2,2},{2,4},{1,27},{1,1},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{1,32},{},{1,1,2,2},{2,2},{2,4},{1,29},{1,1},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{1,34},{},{1,1,2,2},{2,2},{2,4},{1,31},{1,1},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{1,36},{},{1,1,2,2},{2,2},{2,4},{1,33},{1,1},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{1,38},{},{1,1,2,2},{2,2},{2,4},{1,35},{1,1},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{1,40},{},{1,1,2,2},{2,2},{2,4},{1,37},{1,1},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{1,42},{},{1,1,2,2},{2,2},{2,4},{1,39},{1,1},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{1,44},{}};
Net1=FromNetDifferenceSets[EDSL1];
IC1=
{IndexedConcatenate[{1,1,2,2},
IndexedConcatenate[{2,2j},{j,1,2}],
{1,3+2*k},{1,1},IndexedConcatenate[{1,8+2 k},{i,1,2k}],{},{k,1,18}]};
Net1[[1;;100]]

The data listed above represents the first 100 edges of the graph. 1 -> 2 means a connection between vertices 1 and 2.  We note that the repetitive patterns in the graph are not at all visible in the edge list. But grouping edges by “out-vertex” and taking the differences of the vertex numbers for each edge gives the edge difference set list (EDSL), in which patterns reappear.

This shows how the graph edges correspond to sets in the EDSL. Even in the first few sets we begin to see some repetitions:

Grid[{
{"Edges:"}~Concatenate~Insert[GatherBy[Net1[[1;;20]],First],{},8]~Concatenate~{"…"},
{"EDSL:"}~Concatenate~EDSL1[[1;;9]]~Concatenate~{"…"}
}, Alignment->Left, Dividers->All]

For this graph, the first 100 entries in the EDSL are given below. Runs of duplicates are highlighted:

EDSL1[[1;;100]]

{{1,1,2,2},{2,2},{2,4},{1,5},{1,1},{1,10},{1,10},{},{1,1,2,2},{2,2},{2,4},{1,7},{1,1},{1,12},{1,12},{1,12},{1,12},{},{1,1,2,2},{2,2},{2,4},{1,9},{1,1},{1,14},{1,14},{1,14},{1,14},{1,14},{1,14},{},{1,1,2,2},{2,2},{2,4},{1,11},{1,1},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{1,16},{},{1,1,2,2},{2,2},{2,4},{1,13},{1,1},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{1,18},{},{1,1,2,2},{2,2},{2,4},{1,15},{1,1},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{1,20},{},{1,1,2,2},{2,2},{2,4},{1,17},{1,1},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{1,22},{},{1,1,2,2},{2,2}}

An EDSL of a network having some intrinsic pattern typically contains some duplicate sets, which provides an obvious first step in condensing the network down. In this EDSL we see 2 adjacent copies of {1,10}, 4 adjacent copies of {1,12}, 6 copies of {1,14}, 8 copies of {1,16}, etc., which we  represent (Overscript[€, 2])[{1,10}], (Overscript[€, 4])[{1,12}], (Overscript[€, 6])[{1,14}], (Overscript[€, 8])[{1,16}], etc. By reducing the graph down like this, we can notice further patterns. Here is the EDSL above, with exact duplicates summarized, separated onto different lines to showcase the next step.

{1, 1, 2, 2}, {2, 2}, {2, 4}, {1, 5}, {1, 1}, (Overscript[€, 2])[{1, 10}], {},
    {1, 1, 2, 2}, {2, 2}, {2, 4}, {1, 7}, {1, 1}, (Overscript[€, 4]){1, 12}], {},
    {1, 1, 2, 2}, {2, 2}, {2, 4}, {1, 9}, {1, 1}, (Overscript[€, 6])[{1, 14}], {},
    {1, 1, 2, 2}, {2, 2}, {2, 4},{1, 11},{1, 1},(Overscript[€, 8])[{1, 16}], {}, …

After we do this, there is no further reduction that can be done based on exact duplicates of adjacent sets, but we can see that each 7-element row has a common pattern, with only 3 numbers changing in each row. In the first row these numbers are 5, 2, and 10; and in the second row these numbers are 7, 4, and 12; and in general, in the (k^th) row, they are 2k + 3, 2k, and 2k+8. Before moving on to the details of the Indexed Concatenation Notation, the fully reduced EDSL is listed below.

IC1

Note that index variables, i, j, and k, have been introduced. Just as one would expect by analogy to an indexed summation, i, j, and k take on the initial value of 1 and are incremented until the specified final values are reached. In this case it’s 2k, 2 and 18, but the latter can be replaced by ∞. Assuming the pattern has been well established and will continue indefinitely, we have succeeded in summarizing the entire infinite network’s EDSL in one line! Similarly, most causal networks generated by a Sessie (Sequential Substitution System) Ruleset can be summarized by this notation.

Some other examples of I-CATs of networks

(* sssNB2=SSS[{"AAAAB"->"B",""->"AAA"},"B",52,SSSMax->25,NetMax->28,NetSize->550,DirectedEdges->True];
ReduceSetList[ToNetDifferenceSets@sssNB2[["Net"]]];
%[[1;;-3]]//InputForm; *)

ICNB2={IndexedConcatenate[{2,2,2},{1,3,3},{2},{1,1,3},{2},{1,1,1},{3},4]};
Graph[FromNetDifferenceSets[ExpandAll[ICNB2]],VertexLabels->"Name",GraphLayout->"SpringElectricalEmbedding"]
Style[ICNB2,"DisplayFormula"]

(* sssNB4=SSS[{"AAABA"->"",""->"AABA"},"",50,SSSMax->25,NetSize->550,DirectedEdges->True];
ReduceSetList[ToNetDifferenceSets@sssNB4[["Net"]]]
%[[2;;2]]//InputForm *)

ICNB4={IndexedConcatenate[{1, 6, 8}, {}, {IndexedConcatenate[2,4]}, IndexedConcatenate[{1, IndexedConcatenate[3,3]}, {}, 2], 7]};
Graph[FromNetDifferenceSets[ExpandAll[ICNB4]],VertexLabels->"Name",GraphLayout->"SpringElectricalEmbedding"]
Style[ICNB4,"DisplayFormula"]

IC2j={IndexedConcatenate[{-1 + 2^k, 2^k, 1 + 2^k}, IndexedConcatenate[{1 + 2^k}, 1 + 2^k], {1}, 
 IndexedConcatenate[{1, -1 + 2^k + j, 2^k + j}, {j, 1, -1 + 2^k}], {k, 1, 10}]};
Graph[FromNetDifferenceSets[ExpandAll[IC2j]],VertexLabels->None,DirectedEdges->False,ImageSize->450]
Style[IC2j,"DisplayFormula"]

Examples of I-CATs summarizing patterns in decimal expansions:

Grid[{
{" Fraction ","  .Decimal Representation ","  .Indexed Concatenation ","   +Summation "},
{"1/3","0.33333…",Row[{"0.",(Overscript[€, ∞]),"3"}],"0+(∑_(k = 1)^∞)(3·(10^(-k)))"},
{"1/9","0.11111…",Row[{"0.",(Overscript[€, ∞]),"1"}],"0+(∑_(k = 1)^∞)(1·(10^(-k)))"},
{"1/11","0.0909090909…",Row[{"0.",(Overscript[€, ∞]),"(09)"}],"0+(∑_(k = 1)^∞)(9·(10^(-k)))"},
{"1/7","0.14285714285714285714…",Row[{"0.",(Overscript[€, ∞]),"(142857)"}],"0+(∑_(k = 1)^∞)(1428571·(10^(-6 k)))"},
{"1/13","0.076923076923076923…",Row[{"0.",(Overscript[€, ∞]),"(076923)"}],"0+(∑_(k = 1)^∞)(076923·(10^(-6 k)))"},
{"1/17","0.058823529411764705882…",Row[{"0.",(Overscript[€, ∞]),"(0588235294117647)"}],"0+(∑_(k = 1)^∞)(0588235294117647·(10^(-16 k)))"},
{"NA","0.010010001…",Row[{"0.",(Underoverscript[€, (i⊨1), ∞]),"(","(",(Underoverscript[€, (j⊨1), i]),"0",")",1,")"}],"0+(∑_(i = 1)^∞)(1·(10^(-i (i + 3)/2)))"},
{"NA","0.112123123412345…",Row[{"0.",(Underoverscript[€, (i⊨1), ∞]),"(","(",(Underoverscript[€, (j⊨1), i]),"j",")"}],"?+(tricky when i≥10,100,etc.)"},
{"NA","0.1223334444…",Row[{"0.",(Underoverscript[€, (i⊨1), ∞]),"(","(",(Underoverscript[€, (j⊨1), i]),"i",")"}],"?+(tricky when i≥10,100,etc.)"},
{"NA","0.1123581321…",Row[{"0.",(Underoverscript[€, (i⊨1), ∞]),"(\!\(\*SuperscriptBox[TagBox["ϕ",Function[{}, GoldenRatio]], "n"]\)-(-\!\(\*TagBox["ϕ",Function[{}, GoldenRatio]]\))^(-n))/(Sqrt[5])",")"}],"?+(tricky when (Subscript[fib, n])≥10,100,etc.)"}

}, Alignment->{{Center,".",".","+"}}, Dividers->All]

Examples of I-CATs with Lists/Sequences

A few manual constructions:

(Underoverscript[€, (i=1), 3]){i,(i^2)}={1,1}⧺{2,4}⧺{3,9}={1,1,2,4,3,9}

(Underoverscript[€, (i=1), 5]){i,10-i}={1,9}⧺{2,8}⧺{3,7}⧺{4,6}⧺{5,5}={1,9,2,8,3,7,4,6,5,5}

{(Underoverscript[€, (i=1), 3])(Underoverscript[€, (j=1), 3])[j i]}={(Underoverscript[€, (i=1), 3])[i,2i,3i]}= {[1, 2, 3] ⧺ [2,4,6] ⧺ [3,6,9]} = {1,2,3,2,4,6,3,6,9}

{(Underoverscript[€, (i=1), 3])(Underoverscript[€, (j=1), 3])(Underoverscript[€, (k=1), 3])[i j k]}={(Underoverscript[€, (i=1), 3])(Underoverscript[€, (j=1), 3])[ij,2ij,3ij]}={(Underoverscript[€, (i=1), 3])([i,2i,3i]⧺[2i,4i,6i] ⧺[3i,6i,9i]}
={(Underoverscript[€, (i=1), 3])[i,2i,3i,2i,4i,6i,3i,6i,9i]}
={[1,2,3,2,4,6,3,6,9] ⧺[2,4,6,4,8,12,6,12,18] ⧺[3,6,9,6,12,18,9,18,27]}
={1,2,3,2,4,6,3,6,9,2,4,6,4,8,12,6,12,18,3,6,9,6,12,18,9,18,27}

{(Underoverscript[€, (i=1), 4])(Underoverscript[€, (j=1), 5])[j+i,j*i]}={(Underoverscript[€, (i=1), 4])[1+i,1i, 2+i,2i, 3 + i, 3i,4+i,4i,5+i,5i]}
{2,1,3,2,4,3,5,4,6,5,3,2,4,4,5,6,6,8,7,10,4,3,5,6,6,9,7,12,8,15,5,4,6,8,7,12,8,16,9,20}

nmax=5;
PTIC1= IndexedConcatenate[{IndexedConcatenate[((n!)/(k!(n-k)!)), {k, 0, n}]}, {n, 0,nmax}];
Column[{Style["Compressed Form of Pascal's Triangle:","Subsubsection"],PTIC1,"",Style["Expanded Form:","Subsubsection"],Column[ {ExpandAll[PTIC1]},Alignment->Center]}]

Examples of I-CATs with Matrices

An unspecified m×n matrix:

Grid[{{
DisplayForm@MatrixForm@(({{(Subscript[a, 11]), (Subscript[a, 12]), …, (Subscript[a, 1n])}, {(Subscript[a, 21]), (Subscript[a, 22]), …, (Subscript[a, 2n])}, {⋮, ⋮, ⋱, ⋮}, {(Subscript[a, m1]), (Subscript[a, m2]), …, (Subscript[a, mn])}})),
Column[{
Style["IC form:","Subsubsection"],
IndexedConcatenate[IndexedConcatenate[(Subscript[a, ij]),{j,1,n}],{i,1,m}]
}]
}},ItemSize->{18,Automatic}]

({{(({{(Subscript[a, 11]), (Subscript[a, 12]), …, (Subscript[a, n])}, {(Subscript[a, 21]), (Subscript[a, 22]), …, (Subscript[a, 2 n])}, {⋮, ⋮, ⋱, ⋮}, {(Subscript[a, m1]), (Subscript[a, m2]), …, (Subscript[a, mn])}})), ({{IC form:}, {(Underoverscript[€, (i⊨1), m]){(Underoverscript[€, (j⊨1), n]){(Subscript[a, ij])}}}})}})

Cantor’s enumeration of the rational numbers:

(This section is a near verbatim excerpt from the SIMULTECH 2025 paper.)

A famous matrix was used in the first enumeration of the rationals, published in (Cantor, 1874). Georg Cantor, the father of transfinite mathematics, published his proof of the countability of the rationals in 1874, over 150 years ago. One might presume that in the intervening time someone would have come up with a concise, mathematically precise way to describe the process. Sadly, that expectation would be incorrect. Words to describe Cantor’s method are easy:

Imagine an infinite table in which the first element of the first row is 1/1, and then moving one column to the right always increases the numerator by 1, while moving one row down increases the denominator by 1.

Following any (infinite) row or column would mean never getting to the next one; instead, we traverse the array one (finite) diagonal at a time, starting from the upper left corner. Note that for all elements n/d on a given diagonal, n+d is a constant, and in fact, on diagonal number diag, n+d=diag+1.

Cantor actually used a “snake-like” traversal, winding back-and-forth on alternate diagonals, but for our purposes a “trace and retrace” pattern is preferable.

Figure 2: A traversal producing Cantor’s enumeration of fractions.

Successor[{n_Integer,d_Integer}]:=If[d==1,{1,(n+1)},{(n+1),(d-1)}];
display[{n_,d_}]:=Style[Which[n==d==6,"⋱",n==6,"⋯",d==6,"⋮",True,ToString@Row[{n,d},"/"]],20];
edges=(DeleteCases[#1,Null]&)[Flatten[Table[{{n,d}\[DirectedEdge]{n,d},If[(n<=7&&d<=7&&n+d<=6&&n<6),{n,d}->Successor[{n,d}]]},{d,1,6},{n,1,6}],3]];
Graph[edges,VertexCoordinates->Flatten[Table[{n,d}->{n,6-d},{d,1,6},{n,1,6}],1],VertexShapeFunction->(If[#2[[1]]<6&&#2[[2]]<6,{EdgeForm[None],Hue[.8+.09 Plus@@#2],Rectangle[#1-{0.33,.26},#1+{0.33,.31},RoundingRadius->.11],Black,Text[display@#2,#1]},Text[display@#2,#1]]&),EdgeShapeFunction->(If[MatchQ[#2,x_\[DirectedEdge]x_],{},{If[#2[[1]][[2]]==1,Red,Blue],Arrow[#1,If[#2[[1]][[1]]==#2[[2]][[1]]==1,0.35,.33]]}]&),AspectRatio->.7,ImageSize->{250,250}]

Figure 2 first appeared in (Caviness, 2011), and the code to generate it was updated in (Nachbar, 2023).

Note: The set of all fractions in the table is {(p/q)|p,q∈(SuperPlus[ℤ])}, with (p/q) appearing in row q, column p.

The following IC constructs the diagonals in the order Cantor visits them, but traverses each diagonal from left-to-right (by increasing numerator), as shown by the small blue arrows, before advancing to the next diagonal (longer red arrows). We do this by two nested IC objects, the outer specifying the diagonal 𝑑𝑖𝑎𝑔, the inner giving the ((𝑛)^th) element on the diagonal. If the nested list structure is not desired, the inner set of curly braces could be replaced by the disappearing square brackets, generating sequences that are simply spliced into a single list.

cantor={IndexedConcatenate[{IndexedConcatenate[FractionBox[n,diag-n+1],{n,1,diag}]},{diag,1,5}]};

Style["List of diagonals:","Subsubsection"]

DisplayForm[ExpandAll[cantor] ~Concatenate~ {"…"}]

Style["IC reduction:","Subsubsection"]

DisplayForm[cantor /. 5->∞]

(Underoverscript[€, (diag⊨1), ∞]){(Underoverscript[€, (n⊨1), diag]){(n/(1+diag-n))}}

This enumeration cannot be easily produced by conventional mathematical notation, such as using set-builder notation. For example,

{(p/q)|p,q∈(SuperPlus[ℤ])} 
produces all fractions, but loses Cantor’s diagonal ordering.

{(n/(diag-n+1))|diag∈(SuperPlus[ℤ]), n∈{1,..., diag}} 
again produces all fractions, but assumes the user will not sort the resulting list (i.e., non-standard treatment for sets), and has no interest in grouping entries by diagonal.

The Indexed Concatenation form practically writes itself, while set-builder notation requires significant mathematical gymnastics to produce the same result.

The Indexed Concatenation Notation can represent infinite matrices of quantum mechanics – a, (SuperDagger[a]):

aIC1={IC[{IC[0,k],SqrtBox[k],IC[0,7-1-k],"…"},{k,1,7-1}]}~Cat~{Table[0,7]~Cat~{"…"}}~Cat~
{Table["⋮",7]~Cat~{"⋱"}};
ahIC1={Table[0,6]~Cat~{…}} ~Cat~ {IC[{IC[0,k-2],SqrtBox[k-1],IC[0,7-k],…},{k,2,7}]}~Cat~
{Table[⋮,6]~Cat~{⋱}};
Grid[{{
DisplayForm@MatrixForm@ExpandAll[aIC1],", ",DisplayForm@MatrixForm@ExpandAll[ahIC1]
}}]

aIC2 = {IC[{IC[0,k],SqrtBox[k],IC[0,∞]},{k,1,∞}]};
ahIC2 = {IC[{IC[0,k-2],SqrtBox[k-1],IC[0,∞]},{k,1,∞}]};

Grid[{{
DisplayForm@aIC2,", ",DisplayForm@ahIC2
}}]

Read the rows of a this way: 
On row k, start with a sequence of 0s (k copies), followed by (Sqrt[k]), then an infinite sequence of 0s.

Note:  {(Overscript[€, 5])[0]}={(Underoverscript[€, (j⊨1), 5])[0]}=={0,0,0,0,0}, (i.e., a subsequence of 5 copies of 0 inserted into the list (an ordered multiset).

Read the rows of (SuperDagger[a]) this way: 
On row k, start with a sequence 0s (k-2 copies), followed by (Sqrt[k-1]), then an infinite sequence of 0s.

Tricky point: when k=1 or 2, what does it mean to concatenate k-2 copies of 0? (!)

Let’s break this down.
Although the index variable isn’t explicitly given, (Overscript[€, k-2])[0] actually means something like (Underoverscript[€, (j⊨1), (k-2)])[0], so what are the meanings of  (Underoverscript[€, (j⊨1), 0])[0]and (Underoverscript[€, (j⊨1), (-1)])[0]?  The first clearly means a sequence of 0 copies of 0, so it’s an empty subsequence, and adds no entries to that row. But we also consider (Underoverscript[€, (j⊨1), (-1)])[0]to be an empty subsequence, since “j starts at 1 and goes up to -1” shouldn’t even “start the loop”, we’ve already passed the termination condition!

Other work:

• How to "reduce" (or compress) a network list without using ToNetDifferenceSets?  Unknown!
	○ We need this in order to continue on the work started by Jeanna Toulouse and Chris Trana
	○ How will these two reductions compare?  Can we move directly from one to the other?
	○ BREAKTHROUGH! 
		An algorithm has been developed to convert an EDSL I-Cat (even multiply nested!) into an I-Cat of the original graph’s edges. 
		The EDSL I–Cat is easier to generate, and then we use it to come back to the “Trana Form” of the graph’s edges. Topic of a future paper.

• Can the dimension of the network be read directly from the IC reduced form?  Unknown!
• Can IC compress the complete "Evolution" or even the TEvolution (tagged evolution) of the Sessie?  Unknown!
• Can IC be applied in general to repeating strings? Unknown, but probably.
• Can IC be applied to musical notation?  "What is the IC reduced form of Beethoven's Ninth?" (Or of one of Bach's Concertos?!)

Perhaps more fundamentally,

• How can the ReduceSetList algorithm be made more reliable?
	○ Last year's version only worked about half the time, this new version does better (~70%), but needs improvement still.
• We need to step through the algorithm in our meeting, and ask everyone to suggest improvements.
	○ NOT the code, just the logic of the steps involved.
	○ A couple nice demos showing the steps of the reduction algorithm are desperately needed.

FAQ Sessie Intro, 2025.09.09, Kenneth Caviness and Colton Edelbach